function lengthOfLIS(nums) {
    if (nums.length === 0) return 0

    // dp 数组，每个位置初始化为 1
    const dp = new Array(nums.length).fill(1)

    // 计算每个位置的最长递增子序列长度
    for (let i = 1; i < nums.length; i++) {
       for (let j = 0; j < i; j++) {
          if (nums[i] > nums[j]) {
             dp[i] = Math.max(dp[i], dp[j] + 1)
          }
       }
    }

    // 返回 dp 数组中的最大值
    return Math.max(...dp)
 }

 // 示例测试
 console.log(lengthOfLIS([10, 9, 2, 5, 3, 7, 101, 18])) // 输出：4
 console.log(lengthOfLIS([0, 1, 0, 3, 2, 3])) // 输出：4
 console.log(lengthOfLIS([7, 7, 7, 7, 7, 7, 7])) // 输出：1